﻿using System;
using System.Text;
using System.Windows.Forms;
using monitor_2_DBwork;

namespace DBUpdater
{
    public partial class MainForm : Form
    {
        private Guid _guid = new Guid("B9FEB26C-B2CA-4F85-B3DF-D9E977201F02");
        public MainForm()
        {
            InitializeComponent();
        }

        private void updateToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UpdateDB();
        }

        void UpdateDB()
        {
            var list = fileList.CheckedItems;                   //Список файлов для записи
            var dir = AppDomain.CurrentDomain.BaseDirectory;    //Директория, в кторой файлы находятся
            string infoMessage = "";

            InsertIfPossible(dir, ref list, ref infoMessage);
            //InsertIfPossible(dir, ref list);
            if (list.Count == 0)
                MessageBox.Show("Запись проведена успешно:\n" + infoMessage);
            else
            {
                string forErrString = " ";
                foreach (ListViewItem item in list)
                {
                    forErrString += item.Text + " ";
                }
                MessageBox.Show("Ошибка записи " + forErrString
                + ". Возможно целевая таблица содержит ссылки (внешние ключи) на другие таблицы, в которых еще нет записей,"
                + " либо значения, которые вы пытаетесь вставить уже существуют.");
            }
        }

        void InsertIfPossible(string dir, ref ListView.CheckedListViewItemCollection list, ref string infoMessage)
        {
            int count = 0;
            foreach (ListViewItem lt in list)
            {
                bool res = true;

                if (lt.Text.Contains("regions"))
                {
                    res = monitor_2_DBwork.DBUpdater.RegionsInsert(dir + lt.Text, out count);
                    if (res)
                    {
                        lt.Remove();
                        infoMessage += "\nOblast: " + count + " строк добавлено.";
                        continue;
                    }
                }
                if (lt.Text.Contains("blr"))
                {
                    res = monitor_2_DBwork.DBUpdater.BLRInsert(dir + lt.Text, out count);
                    if (res)
                    {
                        lt.Remove();
                        infoMessage += "\nBLR: " + count + " строк добавлено.";
                        continue;
                    }
                }
                //if (lt.Text.Contains("access"))
                //{
                //    res = monitor_2_DBwork.DBUpdater.AccessInsert(dir + lt.Text, out count);
                //    if (res)
                //    {
                //        lt.Remove();
                //        infoMessage += "\nAccess: " + count + " строк добавлено.";
                //        continue;
                //    }
                //}
                if (lt.Text.Contains("stations"))
                {
                    res = monitor_2_DBwork.DBUpdater.RTPSInsert(dir + lt.Text, out count);
                    if (res)
                    {
                        lt.Remove();
                        infoMessage += "\nStations: " + count + " строк добавлено.";
                        continue;
                    }
                }
            }//foreach (ListViewItem lt in list)
        }

        private void createKeyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var str = HardIdentifier.GetCurrentHardString();
            var mas = LicHelper.Encrypt(Encoding.UTF8.GetBytes(str.ToString()), _guid.ToByteArray());
            try
            {
                if (System.IO.File.Exists("ClientFile.pbl"))
                    System.IO.File.Delete("ClientFile.pbl");
                System.IO.File.WriteAllBytes("ClientFile.pbl", mas);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK);
                return;
            }
            MessageBox.Show("Operation Complete");

        }
    }
}
